package com.anlu.pattern.structrue.adapter;

import com.anlu.pattern.common.entity.bag.AppleBag;
import com.anlu.pattern.common.entity.bag.OrangeBag;
import com.anlu.pattern.common.entity.fruit.Orange;

/**
 * 适配器模式（Adapter Pattern）是作为两个不兼容的接口之间的桥梁。
 * 这种类型的设计模式属于结构型模式，它结合了两个独立接口的功能。
 *
 * 这种模式涉及到一个单一的类，该类负责加入独立的或不兼容的接口功能。
 * 举个真实的例子，读卡器是作为内存卡和笔记本之间的适配器。
 * 您将内存卡插入读卡器，再将读卡器插入笔记本，这样就可以通过笔记本来读取内存卡。
 */
public class AdapterClient {
    public static void main(String[] args) {
        Orange orange = new Orange("anlu",100);
        OrangeBag bag = getBag2();
        orange.pack(bag);
    }

    /**
     * 取桔子包装
     * @return
     */
	private static OrangeBag getBag(){
		OrangeBag bag = new OrangeBag();
		return bag;
	}

	private static OrangeBag getBag2(){
        //准备用苹果包装代替
        AppleBag appleBag = new AppleBag();
        //把苹果盒子适配成桔子包装
        OrangeBag orangeBag = new OrangeBagAdapter(appleBag);
        return orangeBag;
    }
}
